/**
 * @ignore
 * 对于webkit内核浏览器，popstate事件只会在page load之后被触发
 * 修复方案 1 ✨
 * 维护一个history index数组list
 * 如果触发浏览器的返回，那么history.state.index在list的位置不是最后一位
 * 此时应当触发页面的返回事件
 * 无法解决前进的问题【历史问题分为前进、后退】
 * 修复方案 2 ✨
 * 提升页面加载速度，尽快触发页面的load事件
 * 如果是弱网络，怎么办呢？
 * 修复方案 3
 * 如果页面没有加载完毕，使用redirect
 * 能解决发部分c端问题
 * 有些依赖单页面的业务，在这种逻辑下会有问题
 * 修复方案 4 ✨
 * 全部使用本地自己维护的history列表
 */

const list = [];
let isLoad = false;

window.addEventListener('load', () => {
    isLoad = true;
});

function pushIndex(index) {
    list.push(Number(index));
}

function stopFix() {
    isLoad = true;
}

const interval = setInterval(() => {
    if (isLoad) {
        clearInterval(interval);
        return;
    }

    const { state = {} } = window.history.state || {};
    const currentIndex = Number(state.index);
    const realIndex = list.findIndex(i => i === currentIndex);
    if (realIndex >= 0 && realIndex < list.length - 1) {
        list.pop();
        // 页面回退
        WPT.showPage(window.location.href, false, true, false, state.noAnimation, true);
    }
}, 200);

export default {
    pushIndex,
    stopFix,
};
